Component({
  options: {
    multipleSlots: true // 在组件定义时的选项中启用多slot支持
  },
  /**
   * 组件的属性列表
   */
  properties: {
    extClass: {
      type: String,
      value: ''
    },
    title: {
      type: String,
      value: ''
    },
    background: {
      type: String,
      value: ''
    },
    color: {
      type: String,
      value: ''
    },
    back: {
      type: Boolean,
      value: true
    },
    loading: {
      type: Boolean,
      value: false
    },
    animated: {
      // 显示隐藏的时候opacity动画效果
      type: Boolean,
      value: true
    },
    show: {
      // 显示隐藏导航，隐藏的时候navigation-bar的高度占位还在
      type: Boolean,
      value: true,
      observer: '_showChange'
    },
    // back为true的时候，返回的页面深度
    delta: {
      type: Number,
      value: 1
    }
  },
  /**
   * 组件的初始数据
   */
  data: {
    displayStyle: '',
    isPC: false,
    routesLength: 0,
  },
  attached() {
    //获取路由
    const routes = getCurrentPages()
    const isFirst = wx.getStorageSync('first') || ''
    if (!isFirst && routes[0].route === "pages/login/login") {
      wx.setStorageSync('first', new Date().getTime())
    }
    const rect = wx.getMenuButtonBoundingClientRect()
    wx.getSystemInfo({
      success: (res) => {
        this.setData({
          isPC: res.platform === "windows" || res.platform === "mac" ? true : false,
          statusBarHeight: res.statusBarHeight,
          innerPaddingRight: `padding-right:${res.windowWidth - rect.left}px`,
          leftWidth: `width:${res.windowWidth - rect.left}px`,
          navBarHeight: rect.bottom + rect.top - res.statusBarHeight,
          routesLength: routes.length
        })
      }
    })


  },
  /**
   * 组件的方法列表
   */
  methods: {
    _showChange(show: boolean) {
      const animated = this.data.animated
      let displayStyle = ''
      if (animated) {
        displayStyle = `opacity: ${show ? '1' : '0'};transition: opacity 0.5s;`
      } else {
        displayStyle = `display: ${show ? '' : 'none'}`
      }
      this.setData({
        displayStyle
      })
    },
    back() {
      const data = this.data
      if (this.data.routesLength === 1) {
        if (data.delta) {
          wx.navigateTo({
            url: '/pages/index/index'
          })
        }
      } else {
        if (data.delta) {
          wx.navigateBack({
            delta: data.delta
          })
        }
      }

      this.triggerEvent('back', { delta: data.delta }, {})
    }
  }
})